package com.zhangjun.chat.application;


import com.zhangjun.chat.domain.user.model.ChatRecordInfo;
import com.zhangjun.chat.domain.user.model.LuckUserInfo;
import com.zhangjun.chat.domain.user.model.UserFriendInfo;
import com.zhangjun.chat.domain.user.model.UserInfo;
import com.zhangjun.chat.infrastructure.po.UserFriend;

import java.util.List;

/**
 * 博  客：http://bugstack.cn
 * 公众号：bugstack虫洞栈 | 沉淀、分享、成长，让自己和他人都能有所收获！
 * create by 小傅哥 on @2020
 */
public interface UserService {

    /**
     * 登陆校验
     *
     * @param userId       用户ID
     * @param userPassword 用户密码
     * @return 登陆状态
     */
    boolean checkAuth(String userId, String userPassword);


    /**
     * 查询用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    UserInfo queryUserInfo(String userId);

    /**
     * 搜索好友
     * @param userId 用户ID
     * @param searchKey 搜索关键字
     * @return 好友信息
     */
    List<LuckUserInfo> queryFuzzyUserInfoList(String userId, String searchKey);

    /**
     * 添加好友
     * @param userFriendList 好友集合
     */
    void addUserFriend(List<UserFriend> userFriendList);

    /**
     * 对话框落库
     * @param userId 用户id
     * @param friendUserId 好友id
     * @param i 对话框类型
     */
    void addTalkBoxInfo(String userId, String friendUserId, int i);

    /**
     * 删除对话框
     * @param userId 用户id
     * @param talkId 对话框id
     */
    void deleteUserTalk(String userId, String talkId);

    /**
     * 查询好友列表
     * @param userId 用户id
     * @return 好友列表
     */
    List<UserFriendInfo> queryUserFriendInfoList(String userId);

    /**
     * 异步落库
     * @param chatRecordInfo 发送的消息
     */
    void asyncAppendChatRecord(ChatRecordInfo chatRecordInfo);

}
